// pages/cart/cart.js
const util = require('../../utils/util');
const { getCartData, deleteGoods, updateCartData } = require('../../config/api')



Page({

  /**
   * 页面的初始数据
   */
  data: {
    cartTotal: {},
    cartList: [],
    isAllChecked: false,
    totalPrice: 0,
    checkedGoodsCount: 0,
    isEditing: false,
  },


  // 获取购物车商品数量
  getGoodsInCartNum() {
    util.request(getCartData).then(res => {
      if (res.errno == 0) {
        res.data.cartList.forEach(item => {
          item.checked = false
        })
        this.setData({
          cartTotal: res.data.cartTotal,
          cartList: res.data.cartList
        })
      }
    })
  },

  // 商品选择事件
  goodsItemCheck(e) {
    // console.log(e);
    this.data.cartList[e.target.dataset.index].checked = !this.data.cartList[e.target.dataset.index].checked
    this.setData({
      cartList: this.data.cartList
    })

    this.computedIsAllChecked()//计算全选框是否勾选
    this.computedTotalPrice()//计算选中的商品的总金额
  },


  // 全选按钮
  toggleAllBtn(e) {
    this.data.cartList.forEach(item => {
      item.checked = !e.target.dataset.flag
    })
    this.setData({
      cartList: this.data.cartList,
      isAllChecked: !this.data.isAllChecked
    })

    this.computedIsAllChecked()//计算全选框是否勾选
    this.computedTotalPrice()//计算选中的商品的总金额
  },

  // 计算商品是否全部勾选
  computedIsAllChecked() {
    let value = false;
    if (this.data.cartList.length == 0) {
      value = false
    } else {
      value = this.data.cartList.every(item => item.checked)
    }

    this.setData({
      isAllChecked: value
    })
  },


  // 计算选中的商品的总金额
  computedTotalPrice() {
    let sum = 0;
    let num = 0;
    this.data.cartList.forEach(item => {
      if (item.checked == true) {
        sum += (item.price * item.number)
        num += item.number
      }
    })
    console.log(sum);
    this.setData({
      totalPrice: sum,
      checkedGoodsCount: num
    })
  },


  // 编辑购物车内商品
  edit() {
    if (this.data.isEditing == false) {
      this.setData({
        isEditing: true
      })
    } else {
      this.setData({
        isEditing: false
      })
    }

  },

  // 编辑模式步进器
  stepperOnChange(e) {
    // console.log(e);
    this.data.cartList[e.target.dataset.index].number = e.detail;
    this.setData({
      cartList: this.data.cartList,
    })

    util.request(updateCartData,{
      productId:this.data.cartList[e.target.dataset.index].productId,
      goodsId:this.data.cartList[e.target.dataset.index].goodsId,
      number:this.data.cartList[e.target.dataset.index].number,
      id:this.data.cartList[e.target.dataset.index].id
    },'POST').then(res=>{
      if(res.errno==0){
        this.computedIsAllChecked()//计算全选框是否勾选
        this.computedTotalPrice()//计算选中的商品的总金额
      }
    })
  },

  // 下单
  createOrder(e) {
    let that = this;
    if (this.data.isEditing == false) {
      // 去订单页面
      if(this.data.cartList.filter(item=>item.checked).length==0){
        util.showErrorToast('请选择商品')
        return
      }
      wx.navigateTo({
        url: '/pages/order/createOrder/createOrder',
      })
    } else {
      // 删除商品功能
      let productIds = [];
      this.data.cartList.forEach(item => {
        if (item.checked == true) {
          productIds.push(item.productId)
        }
      })
      util.request(deleteGoods, {
        productIds: productIds
      }, 'POST').then(res => {
        if (res.errno == 0) {
          // console.log(res);
          let cartList = res.data.cartList.map(v => {
            v.checked = false;
            return v;
          });
          that.setData({
            cartList: cartList,
            cartTotal: res.data.cartTotal,
            isEditing: false
          })
        } else {
          util.showErrorToast(res.errmsg)
        }
        this.computedIsAllChecked()//计算全选框是否勾选
        this.computedTotalPrice()//计算选中的商品的总金额
      })
    }
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad() {

    if (wx.getStorageSync('token')) {
      this.getGoodsInCartNum()
      this.computedIsAllChecked()//计算全选框是否勾选
      this.computedTotalPrice()//计算选中的商品的总金额

    } else {
      util.showErrorToast('请先登录账号~')
      setTimeout(() => {
        wx.navigateTo({
          url: '/pages/login/login?needback=1',
        })
      }, 1500)
    }

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.getGoodsInCartNum()
    this.computedIsAllChecked()//计算全选框是否勾选
    this.computedTotalPrice()//计算选中的商品的总金额

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})